package com.wjb.xietong.view;

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ImageView;
import com.wjb.xietong.R;

public class CVSwitch extends ImageView {
	private OnCheckedChangeListener mOnCheckedChangeListener;
	private boolean mChecked;

	public interface OnCheckedChangeListener {
		public void onCheckedChanged(CVSwitch switchView, boolean isChecked);
	}

	public CVSwitch(Context context) {
		this(context, null);
	}

	public CVSwitch(Context context, AttributeSet attrs) {
		this(context, attrs, 0);
	}

	public CVSwitch(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		setBackgroundResource(R.drawable.setting_off);// 设置开关按钮的背景
		setChecked(false);// 初始化控件为关的状态
	}

	public void setChecked(boolean checked) {
		mChecked = checked;
		if (mChecked) {
			setImageResource(R.drawable.setting_on);
		} else {
			setImageResource(R.drawable.setting_off);
		}
		postInvalidate();
		// 见http://blog.csdn.net/sdhjob/article/details/6512973
		// View的invalidate和postInvalidate都是更新界面，不同的是
		// invalidate与创建VIEW都是在同一个线程中执行的，即主线程，如果在非主线程中执行的话需要配合Handler使用
		// 而postInvalidate可以在非主线程中更新UI界面
	}

	public boolean isChecked() {
		return mChecked;
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		if (mChecked) {
		} else {
		}
		// 画VIEW的时候开始画的点(0,0)是在左上角，图片从左上往下画，画文字的时候开始画的点是在左下角，文字从左下往上画
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		int action = event.getAction();
		switch (action) {
		case MotionEvent.ACTION_UP:
			setChecked(!mChecked);
			if (mOnCheckedChangeListener != null) {
				mOnCheckedChangeListener.onCheckedChanged(this, mChecked);
			}
			break;
		default:
			// Do nothing
			break;
		}

		return true;
	}

	public void setOnCheckedChangeListener(OnCheckedChangeListener listener) {
		mOnCheckedChangeListener = listener;
	}

}